home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / prog_c / lsdoor09.zip / LITE.H < prev    next >
C/C++ Source or Header  |  1996-06-03  |  14KB  |  438 lines

  1. // LightSpeed data structures and main header file...
  2.  
  3.    // See SetEd.H for information...
  4.  
  5. #ifndef _DOOR_CODE_
  6. #include "seted.h"
  7. #else
  8. #define MaxNodes 256        // Door authors may change this...
  9. #endif
  10.  
  11.   // Uncomment this to enable debug calls
  12. //#define _DEBUG_CODE_
  13. //#define DEBUG(X) printf("\nDebug code %i\n", X ); getch();
  14. //#define ONLINE(X) printf("\nDebug code %i - Online = %i\n",X,online); getch();
  15.  
  16. #ifdef DataModule
  17. #ifndef _DOOR_CODE_
  18. char editionString[40] = Edition;
  19. #endif
  20. short LSVersion = 1; short LSSubVersion = 40;   // v1.40
  21. #else
  22. #ifndef _DOOR_CODE_
  23. extern char editionString[40];
  24. #endif
  25. extern int LSVersion, LSSubVersion;
  26. #endif
  27.  
  28.  
  29. /////////
  30.  
  31. //  Definition of a "Post":
  32. //
  33. //    A Post is any message either addressed to "ALL" or a PUBLIC message
  34. //  directed at multiple targets ("Conversation-types").  A reply to an
  35. //  ALL becomes public, a reply to a public-conversation remains a post.
  36. //  Private-conversations are NOT posts, but can exist (they are private).
  37. //  A conversation can never be public, it is always post or private.
  38. //
  39.  
  40. /////////
  41.  
  42.  
  43. //  UserFlags and SubMenu:
  44. //
  45. //    UserFlags Class 1:  Data is a signed long, values:
  46. //
  47. //      -1     ...No experation
  48. //       0     ...Not active (Already expired, never given, etc.)
  49. //       1+    ...Days till expires
  50. //
  51. //      Use "int get_flag( int )" by passing the Class 1 variable and
  52. //     recieving a 1/0 if it is CURRENTLY active.
  53. //
  54. //
  55. ////
  56. //
  57. //    SubMenu Class 1:  Data is a signed integer, values:
  58. //
  59. //      -1     ...No experation
  60. //       0     ...Not active (Already expired, never given, etc.)
  61. //       1+    ...Minutes left till expired
  62. //
  63. //
  64. //
  65. ////
  66. //
  67. //    Class 2:  Data is a signed char, switch:
  68. //
  69. //      -1     ...The user's flag/submenu must be OFF to access this.
  70. //       0     ...This user flag/submenu is ignored.
  71. //      +1     ...The user's flag/submenu must be ON to access this.
  72. //
  73.  
  74. #ifndef __LIGHTSPEED_HEADER__
  75. #define __LIGHTSPEED_HEADER__
  76.  
  77. #ifndef __LIB_HEADER__
  78. #ifndef _DOOR_CODE_
  79. #error Error..  Include LIB.H
  80. #else
  81. #include "Lib.h"
  82. #endif
  83. #endif
  84.  
  85. #ifdef _DOOR_CODE_REG_
  86. #define _DOOR_CODE_
  87. #endif
  88.  
  89. /////////  General definitions...
  90.  
  91. typedef unsigned char uchar;
  92. typedef unsigned int  uint;
  93. typedef unsigned long ulong;
  94.  
  95. typedef unsigned char test;
  96.  
  97. #define true    1
  98. #define false   0
  99.  
  100.  
  101.  
  102. /////////  Global variables...
  103.  
  104. global uchar temp[ 100 ], tempB[ 80 ], tempC[ 80 ];
  105.  
  106. #ifdef DataModule
  107. uchar LSDrive = 0, LSPath[ 80 ];
  108. #else
  109. extern uchar LSDrive, LSPath[ 80 ];  // LSPath has no drive no \
  110.  
  111. #endif
  112.  
  113. global long i, j, k, l, work;
  114.  
  115. global struct time timec;
  116. global struct date datec;
  117.  
  118. global char terminal, redirect, online, lmaskchar, smaskchar, holdmask;
  119. global char lterm_fast; // (0/1) Convert ansi codes -> LTerm codes
  120. global char lterm_ext;  // (0/1) Graphics mode supported
  121.  
  122. global ulong code[ 6 ]; // See internal.cpp and menu.cpp
  123.  
  124. global int  log_fcb;    // File handle for activity log use...
  125.  
  126. global struct ffblk ffblk;
  127.  
  128. global short sysop_view_user; // User to view if Alt-S is pressed.  0 if
  129.                   // not applicable.
  130.  
  131. global char blankline[ 90 ];   //  = "\r        ..."
  132. global char thinline[ 90 ];    //  = "\r--------..."
  133. global char thickline[ 90 ];   //  = "\r========..."
  134.  
  135. global test is_lord;          // Are we running as a LORD IGM?
  136.  
  137. /////////  Functions & Macros...
  138.  
  139. #define d_msg(S) d_str(S)
  140.  
  141.  
  142.  
  143.  
  144. /////////  Record structures...
  145.  
  146.  
  147. struct ID    // Data Control Block (To make file I/O access easier)
  148. {
  149.   unsigned long num;  // Number in the database                    -=Public
  150.   unsigned int  code; // To reconstruct the database               -=Private
  151.          // This is set once by main() in each structure.
  152.              // Door Authors: Code can be used for your own purpose, but
  153.              // don't use it with LightSpeed's data structures.
  154.   unsigned char keyword[20];  // Index key data                    -=Public
  155. };
  156.  
  157.  
  158.  
  159. struct master
  160. {
  161.   unsigned char bbs_name[ 40 ];     // Name of the system
  162.   unsigned char address[ 40 ];      // LaserLink Address
  163.   unsigned char sysop[ 20 ];        // Sysop's handle (Local/Master sysop)
  164.   unsigned char main_number[ 20 ];  // Main BBS Data number (LaserLink)
  165.  
  166. //  unsigned char harddrive;   // Drive letter containing LightSpeed
  167.   unsigned char ramdrive;    // Drive letter for display or = hardrive
  168.  
  169.   char numpages;             // Number of times to beep in a page
  170.  
  171.   struct system
  172.   {
  173.     long calls;
  174.     long files;
  175.     long messages;
  176.     long users;
  177.   } system;
  178.  
  179.   struct records
  180.   {
  181.     long calls;
  182.     long uploads;
  183.     long messages;
  184.     long newusers;
  185.     struct date calls_date;
  186.     struct date uploads_date;
  187.     struct date messages_date;
  188.     struct date newusers_date;
  189.   } records;
  190.  
  191.   struct today
  192.   {
  193.     long calls;
  194.     long uploads;
  195.     long messages;
  196.     long newusers;
  197.     struct date when;
  198.   } today;
  199.  
  200.   uchar months_user;      // Months since last call to delete a user
  201.  
  202.   uchar days_unprivate;   // Days old to delete an un-read private
  203.   uchar days_unpost;      // Days old to delete an un-read post
  204.   uchar days_unpublic;    // Days old to delete an un-read public
  205.   uchar days_private;     // Days old to delete a read private
  206.   uchar days_post;        // Days old to delete a read post
  207.   uchar days_public;      // Days old to delete a read public
  208.   uchar days_generic;     // Days old to delete a generic message
  209.  
  210.   uchar reserved[6];      // Reserved for future use...
  211.  
  212. } global master;
  213.  
  214. /////////
  215.  
  216. struct node
  217. {
  218.   struct ID ID;              // Data Control Block
  219.  
  220.   char comment[ 40 ];        // Sysop's note/special cases/etc.
  221.  
  222.   char laststatus;           // Last setting of statusline
  223.   char lastcall[ 20 ];       // Last caller's handle
  224.   struct date lastdate;      // Date of last call
  225.   struct time lasttime;      // Time of last call
  226.  
  227.   char swap_mode;            // (0) Swap-Any (1) EMS (2) XMS (3) Disk
  228.   char temp_dir[ 40 ];       // Drive and/or path for Swap files (Temp files)
  229.  
  230.   char driver;               // (0) Autodetect (1) Fossil (2) Internal
  231.   char fifo;                 // (0) Autodetect (1) 16550  (2) 8250
  232.   int  comport;              // ComPort number (0-99) 0 = Local
  233.   int  irq;                  // (Internal Only) IRQ #
  234.   int  base;                 // (Internal Only) Base Address
  235.   int  inbuffer;             // (Internal Only) Input buffer
  236.   int  outbuffer;            // (Internal Only) Output buffer
  237.   long baud;                 // Initialized baud rate
  238.   char reset[ 40 ];          // Modem reset command (AT Z)
  239.   char init[ 40 ];           // Modem init command (AT M0)
  240.   char answer[ 20 ];         // Modem answer command (AT A)
  241.   uchar flow;                // (0) None (1) CTS/RTS (LATER=XON/XOFF)
  242.   uchar dialmode;            // (0) Tone (1) Pulse
  243. } global node;
  244.  
  245. /////////
  246.  
  247. struct config
  248. {
  249.                  // NO Control Block, 1-record-per-file
  250.  
  251.   char board;                // (0/1) Open Questionare    (2) Open Mail+Q,
  252.                  // (3) Closed, (4) Closed Q, (5) Closed Mail
  253.  
  254.   char newquest[ 60 ];       // Path & filename of new user questionare
  255.  
  256.   char flags[ 10 ][ 10 ];    // Flag NAMES, refrence only
  257.   char submenu[ 10 ][ 10 ];  // Submenu NAMES, refrence only
  258.  
  259.   int  newsec;               // New user security set
  260.   long newtime;              // Time for first call
  261.   long newcredits;           // # of credits given to new users
  262.  
  263.   char timeout;              // Minutes of inactivity before logging off
  264.  
  265.   char charges[ 24 ];        // % of settings to charge at hour (credits)
  266.                  // Only applies to per-minute rate   (0-100)
  267.  
  268.   uint perdollar;            // # of credits given per dollar...
  269.  
  270.   uchar ripenabled;          // (0/1) Allow use of RIPterm terminal?
  271.  
  272.   uint env_size;             // Size of environment when calling Command.Com
  273.  
  274.   uchar filecredit;          // Credit (0) After Quick-Scan (1) After MAINT
  275.  
  276.   long kratio;               // KB Ratio given to new users...  (Inverted
  277.   long dlratio;              // DL Ratio given to new users...   - to +)
  278.  
  279. } global config;
  280.  
  281. /////////
  282.  
  283. struct security
  284. {
  285.   ulong num;
  286.  
  287.   char name[ 10 ];           // Security level's name
  288.  
  289.   int  doorlevel;            // Security level (For doors)
  290.  
  291.   int  timeday;              // Maximum time per-day
  292.   int  calltime;             // Maximum time per-call
  293.   int  callsday;             // Maximum calls per-day
  294.  
  295.   int  downgrade;            // New security set after expiration date
  296.  
  297.   long freecredits;          // Free Credits given each day
  298.  
  299.   int  submenu[ 10 ];        // Class 1, Value for submenu[*] each day
  300.  
  301.   long klimit;               // Maximum K downloadable in a day
  302.   long dllimit;              // Maximum files downloadable in a day
  303.  
  304.   long kratio;               // Number K downloadable per K uploaded
  305.   long dlratio;              // Number files downloadable per uploaded
  306.  
  307.   uchar sysop;               // (0) No (1) Sysop (2) Master
  308.  
  309.   struct {
  310.     uchar ularea:1;
  311.     uchar dlarea:1;
  312.     uchar mailarea:1;
  313.   } a[ 1000 ];               // Maximum # of areas supported is 1,000
  314.  
  315. } global security, secserch;
  316.  
  317. ////
  318.  
  319. struct user
  320. {
  321.   ulong num;
  322.  
  323.   uchar handle[ 20 ];        // User's id name, handle, or alias
  324.   char real[ 20 ];           // User's real name
  325.   uchar password[ 10 ];      // User's password
  326.   char vphone[ 20 ];         // User's phone number in 000-000-0000 form
  327.   char dphone[ 20 ];         // User's data number in 000-000-0000 form
  328.   char citystate[ 20 ];      // User's city & state
  329.   char zipcode[ 20 ];        // User's zipcode
  330.   uchar comment[ 8 ][ 40 ];  // User Comments
  331.   struct date bday;          // User's birthdate
  332.   char sex;                  // User's sex (0) Unknown (1) Male (2) Female
  333.  
  334.   long credits;              // Remaining credits in user's account
  335.  
  336.   struct date expire;        // Date security expires (To security.downgrade)
  337.   int  security;             // Number of security level
  338.   long flags[ 10 ];          // UserFlags, class 1, see above
  339.   int  submenu[ 10 ];        // SubMenu, class 1, see above
  340.  
  341.   int  callstoday;           // Calls today
  342.   int  timelimit;            // TimeLimit (timeused+this=bye) for this call
  343.   int  timeused;             // Time used TODAY
  344.  
  345.   char setterm;              // (0) AutoDetect, or 'nodeid.term = setterm-1'
  346.   char setlines;             // 'nodeid.lines = setlines'
  347.  
  348.   char proto;                // Default protocal (NULL = Select)
  349.  
  350.   char editor;               // (0) AutoDetect, (1) Select, (2) Full, (3) Line
  351.  
  352.   ulong himail;               // Last read mail # (Private)
  353.   ulong himailall;            // Last read mail # (To ALL)
  354.   ulong himailpublic;         // Last read mail # (Public)
  355.  
  356.   struct time timeon;        // Time of user's last (Previous) call (Logoff)
  357.   struct date dateon;        // Date of user's last (Previous) call (Logoff)
  358.  
  359.   long s_calls;              // Total calls to system and local/sysop logins
  360.   long s_locals;             // Total local/sysop logins
  361.   long s_uploads;            // Total # of uploads
  362.   long s_downloads;          // Total # of downloads
  363.   long s_upk;                // Total KBytes uploaded
  364.   long s_downk;              // Total KBytes downloaded
  365.   long s_written;            // Total messages written
  366.   long s_read;               // Total messages read
  367.  
  368.   long kratio;               // # of KBytes ratio (Can be negative)
  369.   long dlratio;              // # of files ratio (Can be negative)
  370.  
  371.   struct date newfiles;      // Last [N]ew files scan
  372.  
  373.   struct reg
  374.   {
  375.     char used;               // (0/1) Registery has been filled out
  376.  
  377.     char age[ 5 ];           // Age
  378.     char phone[ 20 ];        // Phone number or unlisted
  379.     char first[ 30 ];        // First/Last/No name
  380.     char hobbies[ 60 ];      // Hobbies
  381.     char sports[ 60 ];       // Sports
  382.     char board[ 20 ];        // Or NULL if none
  383.     char bbsnum[ 20 ];       // Phone number to BBS
  384.     char looks[ 60 ];        // Appearance
  385.     char unused[ 60 ];       //
  386.     char movie[ 20 ];        // Favorite movie
  387.     char tvshow[ 20 ];       // Favorite TV Show
  388.     char music[ 20 ];        // Favorite music
  389.  
  390.     char summary[ 2 ][ 40 ]; // 2 lines of summary, NULL if not used
  391.   } reg;
  392.  
  393. } global user, userserch;
  394.  
  395. /////////
  396.  
  397. struct mail
  398. {
  399.   ulong num;
  400.  
  401.   ulong area;                // Match for mailarea.ID.num
  402.  
  403.   ulong credits;             // Credits attached to this message
  404.  
  405.   uchar from[ 20 ];          // Author of message
  406.   uchar to[ 100 ];           // Target of message, or ALL
  407.   uchar subject[ 20 ];       // Description of message
  408.  
  409.   struct date madedate;      // Date message was written
  410.   struct time madetime;      // Time message was written
  411.  
  412.   uchar type;                // (0) Public, (1) Private,
  413.                  // (2) Private-LaserLink,
  414.                  // (3) Private-Alias-Change-Request
  415.                  // (4) Generic Broadcast
  416.   uchar read;                // Message was received (0) No (1) Yes
  417.   uint  replies;          // ** Number of replies or 0
  418.  
  419.   unsigned long fpos;        // Position in message base
  420.   unsigned long lsize;    // ** Length in message base (for data recovery)
  421. } global mail;            // ** Double-Stars are not yet supported, "reservd"
  422.  
  423. //#ifndef _DOOR_CODE_
  424. //#ifndef _DOOR_CODE_REG_
  425. //#include "Lite2.H"            // Header for LightSpeed BBS Software only...
  426. //#endif
  427. //#endif
  428.  
  429. inline char *strchr( unsigned char *str, int c ){ return strchr( (char *)str, c ); }
  430.  
  431. #endif
  432.  
  433. // End of Lite.H
  434.  
  435.  
  436.  
  437.  
  438.